#pragma once

#include "xict_common/utils/utils_yaml.h"
#include "xict_cpp/core/pipeline/remote_controller.h"

namespace xict_cpp {
    namespace utils {
        /// @brief Load a yaml configuration file.
        /// @param config_yaml The YAML object to store the configuration data.
        /// @param node The YAML object node.
        /// @return True if the configuration file was successfully loaded,
        /// false otherwise.
        bool LoadConfig(YAML::Node& config_yaml, const std::string& node);
        /// @brief Update the parameters of a remote controller pipeline based
        /// on a YAML configuration object.
        /// @param config_yaml The YAML object containing the configuration
        /// data.
        /// @param va_params The 'RemoteControllerPipelineParams' object to
        /// update.
        /// @return True if the parameters were successfully updated, false
        /// otherwise.
        bool UpdateRemoteControllerPipelineParams(
            const YAML::Node& config_yaml,
            xict_cpp::core::pipeline::RemoteControllerPipelineParams&
                va_params);
    }   // namespace utils
}   // namespace xict_cpp